#include <iostream>
using namespace std;

//实现通用的 对数组进行排序的函数
//规则：从大到小
//算法：选择排序
//测试：char、int数组

//交换函数模版
template<class T>
void myswap(T& a, T& b)
{
    T temp = a;
    a = b;
    b = temp;
}

//打印数组的模版
template<class T>
void printArr(T& arr, int len)
{
    for (int i = 0;i < len;i++)
    {
        cout << arr[i] << " ";
    }
    cout << endl;
}

//排序算法
template<class T>
void mysort(T arr[],int len)
{
    for (int i = 0;i < len;i++)
    {
        int max = i;// 认定最大值的下标
        for (int j = i + 1;j < len;j++)
        {
            if (arr[max] < arr[j])
            {
                max = j;
            }
        }
        if (max != i)
        {
            //交换
            myswap(arr[max], arr[i]);
        }
    }
}

void test1()
{
    //测试char数组
    char charArr[] = "abdiwjxwedwessza";
    int len = sizeof(charArr) / sizeof(charArr[0]);
    
    mysort(charArr, len);
    printArr(charArr, len);

    //测试int数组
    int intArr[] = { 1,45,23,78,45,64,23,77 };
    int length = sizeof(intArr) / sizeof(intArr[0]);

    mysort(intArr, length);
    printArr(intArr, length);
}
int main()
{
    test1();
    return 0;
}